package delphorm.web.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import delphorm.entite.questionnaire.Question;
import delphorm.entite.questionnaire.Questionnaire;


public class DeplacerReponseSession implements Controller {

	public ModelAndView handleRequest(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		
		
		//récupère le numero de la reponse dans les paramètres de la requete
		String param = request.getParameter("numeroreponse");
		//TODO exception si pas de parametres
		Integer idReponse = Integer.valueOf(param);
		//TODO exception si erreur
		
//		récupère le numero de la question dans les paramètres de la requete
		param = request.getParameter("numeroquestion");
		//TODO exception si pas de parametres
		Integer idQuestion = Integer.valueOf(param);
		//TODO exception si erreur
		
//		recupere le questionnaire dans la session
		Questionnaire questionnaire = (Questionnaire)request.getSession().getAttribute("questionnaire");
		//l'intercepteur a vérifié que le questionnaire est dans la session donc pas d'exception
		
//		recupere la question dans le questionnaire
		Question question = (Question)questionnaire.getQuestions().get(idQuestion.intValue());
		//TODO exception si erreur
		
		//	récupere le sens de déplacement
		String direction = request.getParameter("direction");
		
		//permet de connaitre líd avec lequel il faut permuter
		Integer idPermuter = null;
		
		
		//TODO ex si null
		if(direction.equals("haut"))
		{
			//si c'est la premiere question pas possible de monter
			if(idReponse.intValue() != 0)
			{
				idPermuter = new Integer(idReponse.intValue() - 1);
			}
		}
		else if(direction.equals("bas"))
		{
			//si c'est la derniere question pas possible de descendre
			if(idReponse.intValue() != question.getReponses().size()-1)
			{
				idPermuter = new Integer(idReponse.intValue() + 1);
			}
		}
		//TODO else ex
		
		if(idPermuter != null)
		{
			question.echangerReponses(idReponse,idPermuter);
		}

		//remet la question dans la session
		//TODO Est-ce nécessaire parceque ce sont des références sur un même objet? 
		request.setAttribute("question",question);
		
		//retourne le ModelAndView
		//l'utilisateur va à la page d'ajout de question
		return new ModelAndView("modifierQuestionnaireConfirm");
	}

}
